/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.cip.esymons.colegiatura.beans;

import org.cip.esymons.colegiatura.bc.*;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.general.be.Capitulo;
import org.cip.esymons.general.be.ConsejoDepartamental;
import org.cip.esymons.general.be.Especialidad;
import org.cip.esymons.general.be.EspecialidadCapitulo;
import org.cip.esymons.general.be.Universidad;

/**
 *
 * @author ADMINISTRADOR
 */
public class espCapController {

    private EspCapDelegate delegado;
    private EspecialidadCapitulo espCap;
    private Especialidad especialidad;
    private ConsejoDepartamental consejo;
    private Capitulo capitulo;
    private Universidad universidad;
    
    public espCapController() {

        delegado = new EspCapDelegate();
        espCap = new EspecialidadCapitulo();
        especialidad = new Especialidad();
        consejo = new ConsejoDepartamental();
        capitulo =  new Capitulo();
        universidad = new Universidad();

    }

    public Universidad getUniversidad() {
        return universidad;
    }

    public void setUniversidad(Universidad universidad) {
        this.universidad = universidad;
    }

    public EspCapDelegate getDelegado() {
        return delegado;
    }

    public void setDelegado(EspCapDelegate delegado) {
        this.delegado = delegado;
    }

    public EspecialidadCapitulo getEspCap() {
        return espCap;
    }

    public void setEspCap(EspecialidadCapitulo espCap) {
        this.espCap = espCap;
    }

    public Capitulo getCapitulo() {
        return capitulo;
    }

    public void setCapitulo(Capitulo capitulo) {
        this.capitulo = capitulo;
    }

    public ConsejoDepartamental getConsejo() {
        return consejo;
    }

    public void setConsejo(ConsejoDepartamental consejo) {
        this.consejo = consejo;
    }

    public Especialidad getEspecialidad() {
        return especialidad;
    }

    public void setEspecialidad(Especialidad especialidad) {
        this.especialidad = especialidad;
    }

    public EspecialidadCapitulo buscarPorCodigo(Integer codigo){

        return delegado.find(codigo);
    }

    public List<EspecialidadCapitulo> getListaEspCap(){

        return delegado.findAll();
    }

    public String nuevo(){

        espCap = new EspecialidadCapitulo();
        capitulo = new Capitulo();
        consejo = new ConsejoDepartamental();
        especialidad = new Especialidad();
        universidad = new Universidad();
        return "ir_a_nuevo";
    }

    public String editar(){

        delegado.edit(espCap);
        espCap = new EspecialidadCapitulo();
        mostrarMensaje("INFO: ", "Se Actualizo satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return "ir_a_listar";
    }

    public String grabar(){        

        espCap.setEcaActivo(true);
        delegado.create(espCap);
        inicializa();
        mostrarMensaje("INFO: ", "Se registro satisfactoriamente...", FacesMessage.SEVERITY_INFO);
        return  "ir_a_listar";
    }

    public String inicializa(){
        espCap = new EspecialidadCapitulo();
        especialidad = new Especialidad();
        consejo = new ConsejoDepartamental();
        capitulo =  new Capitulo();
        universidad = new Universidad();
        return "";
    }

    public String remover(){

        delegado.remove(espCap);
        espCap = new EspecialidadCapitulo();
        return null;
    }
    //LISTA LOS CAPITULOS

    public SelectItem[] getSelectListaCapitulos(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<EspecialidadCapitulo> listaEspecialidad = delegado.listaCapitulos();
        selects = new SelectItem[listaEspecialidad.size()];
        int cont = 0;
        for(EspecialidadCapitulo esp : listaEspecialidad){

            SelectItem item = new SelectItem(esp, esp.getCapCodigo().getCapDescripcion());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen capitulos");
            selects[0] = item;
            return selects;
      }

    }

    public SelectItem[] getSelectListaEspXCap(){

      try{
        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<EspecialidadCapitulo> listaEspecialidad = delegado.listaEspPorCap(consejo);
        selects = new SelectItem[listaEspecialidad.size()];
        int cont = 0;
        for(EspecialidadCapitulo esp : listaEspecialidad){

            SelectItem item = new SelectItem(esp, esp.getEspCodigo().getEspDescripcion());
            selects[cont] = item;
            cont++;
        }
        return selects;
      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen especialidades");
            selects[0] = item;
            return selects;
      }

    }

//    public SelectItem[] getSelectListaCapXConsejo(){
//
//      try{
////        System.out.println("Ingreso 1");
//        SelectItem[] selects = null;
//        List<EspecialidadCapitulo> listaCapitulo = delegado.listaCapPorConsejo(consejo);
//        selects = new SelectItem[listaCapitulo.size()];
//        int cont = 0;
//        for(EspecialidadCapitulo espCons : listaCapitulo){
//
//            SelectItem item = new SelectItem(espCons, espCons.getCapCodigo().getCapDescripcion());
//            selects[cont] = item;
//            cont++;
//        }
//        return selects;
//
//      }catch(Exception e){
//            System.out.println("Ingreso Error");
//            SelectItem[] selects = new SelectItem[1];
//            SelectItem item = new SelectItem(null, "No existen capitulos");
//            selects[0] = item;
//            return selects;
//      }
//
//    }

    public SelectItem[] getSelectListaCapXConsejo(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Capitulo> listaCapitulo = delegado.listarCapitulosLaLibertad(consejo);
        selects = new SelectItem[listaCapitulo.size()];
        int cont = 0;
        for(Capitulo espCons : listaCapitulo){

            SelectItem item = new SelectItem(espCons, espCons.getCapDescripcion());
            selects[cont] = item;
            cont++;
        }
        return selects;

      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen capitulos");
            selects[0] = item;
            return selects;
      }

    }
    public SelectItem[] getSelectListaCapXConsLL(){

      try{
//        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<EspecialidadCapitulo> listaCapitulo = delegado.listaCapPorConsejoLL();
        selects = new SelectItem[listaCapitulo.size()];
        int cont = 0;
        for(EspecialidadCapitulo espCons : listaCapitulo){

            SelectItem item = new SelectItem(espCons, espCons.getCapCodigo().getCapDescripcion());
            selects[cont] = item;
            cont++;
        }
        return selects;

      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen capitulos");
            selects[0] = item;
            return selects;
      }

    }

    public SelectItem[] getSelectListaCapLL(){

      try{
        System.out.println("Ingreso 1");
        SelectItem[] selects = null;
        List<Capitulo> listaCap = delegado.listarCapitulosLibertad();
        selects = new SelectItem[listaCap.size()];
        int cont = 0;
        for(Capitulo cap : listaCap){

            SelectItem item = new SelectItem(cap, cap.getCapDescripcion());
            selects[cont] = item;
            cont++;
        }
        return selects;

      }catch(Exception e){
            System.out.println("Ingreso Error");
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen capitulos");
            selects[0] = item;
            return selects;
      }

    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

    

}
